Lifetouch note notes
Accessing APX Mode
There’s a unplaced switch just above the Nvidia Tegra 250 CPU shield (see image above). Connect pins 3 and 4 of SW2 while pressing the power button to enable APX mode.
Flashing a partition using nvflash
nvflash –bl /usr/lib/nvflash/fastboot.bin –download 11 ./lubuntu-12.10-preinstalled-desktop-armhf+ac100.bootimg
The Lifetouch note appears to have the LNX partition on partition 11, not 6 as the ac100.
Note: The ac100 bootimage does NOT work. The screen does some funky stuff, but nothing to indicate that it’s actually booting a kernel. (update: The SOSBoot kernel boots and the serial console works, but not the display.)
Partition table
The partition table can be dumped with nvflash –bl
PartitionId=2 Name=BCT DeviceId=18 StartSector=0 NumSectors=1536 BytesPerSector=2048 PartitionId=3 Name=PT DeviceId=18 StartSector=1536 NumSectors=128 BytesPerSector=2048 PartitionId=4 Name=EBT DeviceId=18 StartSector=1664 NumSectors=1024 BytesPerSector=2048 PartitionId=5 Name=NVC DeviceId=18 StartSector=2688 NumSectors=256 BytesPerSector=2048 PartitionId=6 Name=MBR DeviceId=18 StartSector=2944 NumSectors=512 BytesPerSector=2048 PartitionId=7 Name=MSC DeviceId=18 StartSector=3456 NumSectors=1024 BytesPerSector=2048 PartitionId=8 Name=MFG DeviceId=18 StartSector=4480 NumSectors=76800 BytesPerSector=2048 PartitionId=9 Name=SOS DeviceId=18 StartSector=81280 NumSectors=2560 BytesPerSector=2048 PartitionId=10 Name=ER1 DeviceId=18 StartSector=83840 NumSectors=128 BytesPerSector=2048 PartitionId=11 Name=LNX DeviceId=18 StartSector=83968 NumSectors=4096 BytesPerSector=2048 PartitionId=12 Name=ER2 DeviceId=18 StartSector=88064 NumSectors=128 BytesPerSector=2048 PartitionId=13 Name=APP DeviceId=18 StartSector=88192 NumSectors=98304 BytesPerSector=2048 PartitionId=14 Name=ER3 DeviceId=18 StartSector=186496 NumSectors=128 BytesPerSector=2048 PartitionId=15 Name=CAC DeviceId=18 StartSector=186624 NumSectors=76800 BytesPerSector=2048 PartitionId=16 Name=ER4 DeviceId=18 StartSector=263424 NumSectors=128 BytesPerSector=2048 PartitionId=17 Name=USP DeviceId=18 StartSector=263552 NumSectors=128000 BytesPerSector=2048 PartitionId=18 Name=ER5 DeviceId=18 StartSector=391552 NumSectors=128 BytesPerSector=2048 PartitionId=19 Name=UDA DeviceId=18 StartSector=391680 NumSectors=3520000 BytesPerSector=2048
nvflash output
nvflash --bl /usr/lib/nvflash/fastboot.bin --download 11 ./ubuntu-12.04-preinstalled-desktop-armhf+ac100.bootimg Nvflash started rcm version 0X20001 System Information: chip name: t20 chip id: 0x20 major: 1 minor: 3 chip sku: 0x8 chip uid: XXXXXX macrovision: disabled hdcp: enabled sbk burned: false dk burned: false boot device: emmc operating mode: 3 device config strap: 0 device config fuse: 0 sdram config strap: 0 downloading bootloader -- load address: 0x108000 entry point: 0x108000 sending file: /usr/lib/nvflash/fastboot.bin | 940112/940112 bytes sent /usr/lib/nvflash/fastboot.bin sent successfully waiting for bootloader to initialize bootloader downloaded successfully sending file: ./ubuntu-12.04-preinstalled-desktop-armhf+ac100.bootimg / 8388608/8388608 bytes sent ./ubuntu-12.04-preinstalled-desktop-armhf+ac100.bootimg sent successfully
PCB Images:
Bootable kernel
Kernel from: http://developer.download.nvidia.com/assets/mobile/files/tegra-linux-12.alpha.1.0.tar.gz
Boot image built with: ./bootloader/mkbootimg –kernel ./kernel/zImage –ramdisk NONE -o ~/m.img –cmdline “debug mem=128M”
Update: sosboot and probably other ac100 kernel boot and show data on the serial port.
Serial Port
There’s a 3.3v level serial port located under the SD Card slot (see additional post). No connector is mounted, you’ll need to solder one. The output is as follows:
**********Aos DebugSemiHosting Initialized******* --------------------------------------------------- ODM CPU freq request beyond SOC limit ADJUSTED CLOCKS: MC clock is set to 333000 KHz EMC clock is set to 666000 KHz (DDR clock is at 333000 KHz) PLLX0 clock is set to 1000000 KHz PLLC0 clock is set to 600000 KHz CPU clock is set to 1000000 KHz System and AVP clock is set to 240000 KHz GraphicsHost clock is set to 108000 KHz 3D clock is set to 111000 KHz 2D clock is set to 111000 KHz Epp clock is set to 111000 KHz Mpe clock is set to 111000 KHz Vde clock is set to 240000 KHz DTT: TMON initialization failed Bootloader version: eng.NEC.20110609.091639 I2C Slave is *New* ***NVEC:Received Spurious Response from EC.Checking for android ota recovery OS will cold boot in 0 seconds if no input is detected Key driver not found.. Booting OS Cold-booting Linux
Source code
There’s a source code release by NEC. I’ve uploaded it here.
Framebuffer notes
From the NEC source release:
// these values are just defaults. they will be over-written with th // correct values from the boot args. .var = { .xres = 800, .yres = 480, .xres_virtual = 800, .yres_virtual = 480, .bits_per_pixel = 16, .red = {11, 5, 0}, .green = {5, 6, 0}, .blue = {0, 5, 0}, .transp = {0, 0, 0}, .activate = FB_ACTIVATE_NOW, .height = -1, .width = -1, .pixclock = 24500, .left_margin = 0, .right_margin = 0, .upper_margin = 0, .lower_margin = 0, .hsync_len = 0, .vsync_len = 0, .vmode = FB_VMODE_NONINTERLACED, },
AC100 config, patch to use different display:
--- marvin-2.6.38.8-oc/arch/arm/mach-tegra/board-paz00-panel.c.old 2011-09-19 19:33:24.000000000 +0100 +++ marvin-2.6.38.8-oc/arch/arm/mach-tegra/board-paz00-panel.c 2011-12-29 23:56:45.588167000 +0000 @@ -251,7 +251,7 @@ { .name = "fbmem", .start = 0x1fd95000, - .end = 0x1fd95000 + 0x26B000 - 1, // 2.4 MB @ 509 MB + .end = 0x1fd95000 + 0x384000 - 1, // 2.4 MB @ 509 MB .flags = IORESOURCE_MEM, }, }; @@ -279,15 +279,15 @@ static struct tegra_dc_mode paz00_panel_modes[] = { { - .pclk = 42430000, + .pclk = 71735520, .h_ref_to_sync = 4, .v_ref_to_sync = 2, .h_sync_width = 136, .v_sync_width = 4, .h_back_porch = 138, .v_back_porch = 21, - .h_active = 1024, - .v_active = 600, + .h_active = 1280, + .v_active = 720, .h_front_porch = 34, .v_front_porch = 4, }, @@ -295,8 +295,8 @@ static struct tegra_fb_data paz00_fb_data = { .win = 0, - .xres = 1024, - .yres = 600, + .xres = 1280, + .yres = 720, .bits_per_pixel = 16, };